import _router from '@/router'
import {Message} from "element-ui";
import {security_const} from "./constant";
import {securityStore} from "./observable";

import {hasPermission} from "./common";
/*路由守卫*/
/*控制无授权时跳转登录页面*/
_router.beforeEach((to, from, next) => {

  if (to.path === '/login') {
    securityStore.mutation.logoutClean()
    return next()
  }
  /**
   * 权限控制的方案：
   * 用户体验的三种权限控制：1、任何人可访问，2、登录用户可访问，3、拥有特色权限的登录用户可访问
   * 访问权限使用$route.meta.auth字段标识
   * 1. 不指定权限标识时任何人都可用看
   * 2. 指定权限标识(*)后只要登录后就可看 //TODO：多个*的处理逻辑
   * 3. 指定权限标识后必须有权限的人才可看
   */

  //受权限控制的路由
  if (to.meta.auth ) {
    //检查是否有登录
    const oauthToken = securityStore.observe.oauthToken[security_const.access_token]
    if (!oauthToken) {
      Message({message: '您未登录，请登录后访问', type: 'warning', duration: 3000})
      return next({path: '/login', query: {redirect: to.fullPath}})
    }
    if (to.meta.auth != "*") {
      //检查是否有指定授权
      let valid = hasPermission(to.meta.auth.code)
      if (!valid) {
        Message({message: '您没有该页面的访问权限', type: 'warning', duration: 3000})
        return next({path: '/login'})
        //return next(from)
      }
    }
  }

  return next()
})
